package com.cykj.pos.service;

import com.cykj.pos.domain.BizFeesCharged;
import com.cykj.pos.domain.BizMerchTransactions;
import com.cykj.pos.domain.BizTransactionAmountEntity;
import com.cykj.pos.domain.SynchronizationDataDTO;
import com.cykj.pos.domain.dto.BizPosMessage;
import com.cykj.pos.domain.vo.BizMerchParentRelated;
import org.apache.ibatis.annotations.Select;

import java.text.ParseException;
import java.util.List;

public interface IBizTransactionAmount {

    /**
     * 存交易通知
     *
     * @param synchronizationDataDTO
     * @return
     */
    String insertBizTransactionAmount(SynchronizationDataDTO synchronizationDataDTO);

    /**
     * 分账
     *
     * @param sy
     * @return
     */
    String castAccount(SynchronizationDataDTO sy);

    /**
     * xxl生成偷单的交易记录
     *
     * @param sy
     * @return
     */
    String insertBizTransactions(SynchronizationDataDTO sy);

    /**
     * 更改pos1.0
     *
     * @return
     */
    int updateBizTransactionAmount(BizMerchTransactions bizMerchTransactions);

    int updateBizTransactionAmountSuffix(BizMerchTransactions bizMerchTransactions);

    /**
     * 更改交易记录表变为不是偷单
     *
     * @return
     */
    int updateBizMerchTransactions(BizMerchTransactions bizMerchTransactions);

    /**
     * 查询pos1.0记录
     *
     * @param bizMerchTransactions
     * @return
     */
    BizPosMessage selectPos(BizMerchTransactions bizMerchTransactions);

    List<BizPosMessage> selectPosSy();

    /**
     * 更新手续费
     *
     * @param syDTO
     * @return
     */
    int updateBizTransactionAmountAddiAmount(BizPosMessage syDTO);

    /**
     * 插入拿账分账记录表
     *
     * @param syDTO
     * @return
     */
    int insertBizRateMoney(BizPosMessage syDTO);

    //查询所有通知的sn
    List<String> selectAllPos();

    //查询商户的上级代理
    BizMerchParentRelated selectParenId(String posCode);
    void updateBizTransactionAmountMerchIdAndParentId(BizMerchParentRelated bizMerchParentRelated);

    /**
     * 商户返现
     * @param sy
     */
    String cashMoney(SynchronizationDataDTO sy);

    /**
     * 查询pos1.0
     * @param uuid
     * @return
     */
    SynchronizationDataDTO selectOne(String uuid);

    String castAccountTrack(SynchronizationDataDTO sy);

    /**
     * 更新pos1.0
     * @param synchronizationDataDTO
     */
    void updateBizTransactionAmountPos(SynchronizationDataDTO synchronizationDataDTO);

    /**
     * 分流量费
     * @param sy
     */
    String returnSimAmt(SynchronizationDataDTO sy,boolean b );

    String selectSuffix(BizMerchTransactions bizMerchTransactions);

    BizFeesCharged createSimAmt(SynchronizationDataDTO sy);

    List<BizTransactionAmountEntity> selectAllAmount();

    boolean isOrNo(SynchronizationDataDTO sy);

    void executeDayDataToThisMonthData();

    void executeDayTotalToThisMonthData();

    void unActive() throws ParseException;

    void executeThisMonthDataToLastMonthDate();
}
